/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.folha.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

/**
 *
 * @author marceloml
 */
@Entity
@Table(name="professor")
public class Professor implements Serializable {
    private static final long serialVersionUID = 1L;
    
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Column(name = "CD_PROFESSOR")
    private Integer id;
    
    @Column(name = "NM_PROFESSOR")
    private String nome; 
    
    @Column(name = "CPF")
    private String cpf;
    
    @Column(name = "ENDERECO")
    private String endereco;
    
    @Column(name = "BAIRRO")
    private String bairro;
    
    @Column(name = "CIDADE")
    private String cidade;
    
    @Column(name = "ESTADO")
    private String estado;
    
    @Column(name = "IDENTIDADE")
    private String identidade;
    
    @Column(name = "EMAIL")
    private String email;
    
    @Column(name = "TEL_RESID")
    private String telResid;
    
    @Column(name = "TEL_CEL")
    private String telCel;
    
    @Column(name = "TEL_COM")
    private String telCom;
    
    @Column(name = "DT_NASCIMENTO")
    private String nascimento;
    
    @Column(name = "OBSERVACOES")
    private String observacoes;     
    
    @Column(name = "OCORRENCIAS")
    private String ocorrencias;         
    
    @Column(name = "DT_CADASTRO")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dt_cadastro;     
    
    @Column(name = "CD_USUARIO_CADASTRO")
    private Integer usuario_cadastro;      

    @Column(name = "DT_ATUALIZACAO")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dt_atualizacao;          

    @Column(name = "CD_USUARIO_ATUALIZACAO")
    private Integer usuario_atualizacao;   
    
    @Column(name = "ATIVO")
    private Boolean ativo;            
    
    @Column(name = "PROBLEMA")
    private Boolean problema;
    
    @OneToMany(mappedBy = "professor", targetEntity= ProfessorUnidadeTipologia.class, fetch= FetchType.EAGER, cascade= CascadeType.ALL)
    @Fetch(FetchMode.SELECT)
    @JoinColumn(name="CD_PROFESSOR")    
    private Set<ProfessorUnidadeTipologia> professorUnidadeTipologia = new HashSet<ProfessorUnidadeTipologia>(0);    
    
    @OneToMany(mappedBy = "professor", targetEntity= DisponibilidadeProfessor.class, fetch= FetchType.EAGER, cascade= CascadeType.ALL)
    @Fetch(FetchMode.SELECT)
    @JoinColumn(name="CD_PROFESSOR")    
    private Set<DisponibilidadeProfessor> disponibilidadeProfessor = new HashSet<DisponibilidadeProfessor>(0);        
    
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "br.com.folha.entity.Professor[ id=" + getId() + " ]";
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getNascimento() {
        return nascimento;
    }

    public void setNascimento(String nascimento) {
        this.nascimento = nascimento;
    }

    public String getObservacoes() {
        return observacoes;
    }

    public void setObservacoes(String observacoes) {
        this.observacoes = observacoes;
    }

    public Integer getUsuario_cadastro() {
        return usuario_cadastro;
    }

    public void setUsuario_cadastro(Integer usuario_cadastro) {
        this.usuario_cadastro = usuario_cadastro;
    }

    public Date getDt_atualizacao() {
        return dt_atualizacao;
    }

    public void setDt_atualizacao(Date dt_atualizacao) {
        this.dt_atualizacao = dt_atualizacao;
    }

    public Integer getUsuario_atualizacao() {
        return usuario_atualizacao;
    }

    public void setUsuario_atualizacao(Integer usuario_atualizacao) {
        this.usuario_atualizacao = usuario_atualizacao;
    }

    public Date getDt_cadastro() {
        return dt_cadastro;
    }

    public void setDt_cadastro(Date dt_cadastro) {
        this.dt_cadastro = dt_cadastro;
    }

    public Boolean getAtivo() {
        return ativo;
    }

    public void setAtivo(Boolean ativo) {
        this.ativo = ativo;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public String getIdentidade() {
        return identidade;
    }

    public void setIdentidade(String identidade) {
        this.identidade = identidade;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTelResid() {
        return telResid;
    }

    public void setTelResid(String telResid) {
        this.telResid = telResid;
    }

    public String getTelCel() {
        return telCel;
    }

    public void setTelCel(String telCel) {
        this.telCel = telCel;
    }

    public String getTelCom() {
        return telCom;
    }

    public void setTelCom(String telCom) {
        this.telCom = telCom;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getOcorrencias() {
        return ocorrencias;
    }

    public void setOcorrencias(String ocorrencias) {
        this.ocorrencias = ocorrencias;
    }

    public Boolean getProblema() {
        return problema;
    }

    public void setProblema(Boolean problema) {
        this.problema = problema;
    }

    public Set<ProfessorUnidadeTipologia> getProfessorUnidadeTipologia() {
        return professorUnidadeTipologia;
    }

    public void setProfessorUnidadeTipologia(Set<ProfessorUnidadeTipologia> professorUnidadeTipologia) {
        this.professorUnidadeTipologia = professorUnidadeTipologia;
    }

    /**
     * @return the disponibilidadeProfessor
     */
    public Set<DisponibilidadeProfessor> getDisponibilidadeProfessor() {
        return disponibilidadeProfessor;
    }

    /**
     * @param disponibilidadeProfessor the disponibilidadeProfessor to set
     */
    public void setDisponibilidadeProfessor(Set<DisponibilidadeProfessor> disponibilidadeProfessor) {
        this.disponibilidadeProfessor = disponibilidadeProfessor;
    }
    
}